iT邦幫忙

2025 iThome 鐵人賽

DAY 16
0
自我挑戰組

THM30天挑戰:從菜鳥到小駭客系列 第 16

Day 16. Networking 6

  • 分享至 

  • xImage
  •  

前面講了那麼多網路、封包、協定之類的
今天我們來講講可用的分析工具

room 5.Wireshark: The Basics

Wireshark(舊稱 Ethereal)是一個開源、跨平台的網路封包剖析器,可即時從網路介面擷取封包中的資料,Wireshark 是目前最強大的流量分析工具之一,廣泛應用於網路診斷、安全分析和協議研究

用途:

  • 偵測排除網路問題
    • Wireshark 能捕獲並分析網路封包,幫助識別網路負載的瓶頸、延遲或斷線問題
    • EX.通過檢查封包丟失率、RTT(往返時間)或重傳情況,可以定位擁塞點或故障設備
    • 常用過濾器如 ip.src == x.x.x.x 或 tcp.analysis.lost_segment 可快速聚焦問題
  • 偵測安全性異常
    • Wireshark 可識別異常流量模式
    • EX.來自惡意主機的掃描行為(掃描大量連接埠)、DDoS 攻擊或異常協議使用
    • 通過檢查不尋常的端口活動(如非標準端口的流量)或可疑的數據包內容(如異常大的 ICMP 封包),可發現潛在威脅
    • 過濾器 tcp.port == 4444 可檢查常見的惡意軟體端口
  • 調查和了解協議細節
    • Wireshark 提供詳細的封包解析
    • 顯示協議層次(如 TCP、HTTP、DNS)的具體資訊,包括回應代碼(如 HTTP 404、500)、有效負載數據和標頭內容
    • 這對開發者或網路工程師來說非常有用,可用於調試應用程序或學習協議行為
    • 使用 http.response.code == 200 過濾成功響應,或檢查 TLS 握手細節

常見支援格式

  1. .pcap
    • 傳統的封包擷取格式(libpcap/WinPcap 標準)
  2. .pcapng(PCAP Next Generation)
    • 比較新的格式,可以存更多資訊(像擷取環境資訊、註解等)
  3. .cap
    • 某些工具(如 Microsoft Network Monitor 或其他早期捕獲工具)使用的封包文件格式
    • 格式較老,元數據支持有限,但 Wireshark 能兼容讀取
  4. .dmp
    • 通常與 tcpdump 或其他工具生成的記憶體轉儲格式相關,部分 Windows 工具也使用此擴展名
    • 內容因工具而異,Wireshark 通常能解析,但可能需要確認來源工具的兼容性

幾乎是「任何你能抓的封包,它都能打開
不只網路流量,像藍牙、USB 封包、甚至 VoIP(網路語音)都可以用 Wireshark 分析

room 6.Tcpdump: The Basics

Tcpdump 是一個用於擷取和分析網路封包的命令列工具,它能即時顯示經過網路介面卡的資料流量,讓使用者檢視協定、來源、目的地、封包內容等資訊

基於 libpcap 函式庫,它可以在大部分類 Unix 系統(Linux、macOS、BSD)上使用

主要特點

  • 即時監控:可以在命令列直接看到封包,無需圖形界面,適合快速診斷或遠程伺服器環境
  • 過濾功能強大:支援 BPF (Berkeley Packet Filter),可依照協定、IP、port、封包方向等條件篩選
  • 輸出格式多樣:可以即時顯示,也能儲存成 .pcap 檔案供 Wireshark 等工具分析
  • 輕量快速:tcpdump 是輕量級工具,資源佔用低,適合在伺服器、嵌入式系統或資源受限環境中運行

下面來講一下Tcpdump的基本指令

基本封包擷取

$ tcpdump  //擷取網卡上的所有封包
$ tcpdump -i eth0  //擷取指定INTERFACE的封包
$ tcpdump -c 10 //只擷取10個封包
$ tcpdump -w/r FILE //將資料包寫入文件/從檔案讀取資料包

這邊提一嘴 INTERFACE 因為發現之前沒講過😱

介面 (interface)

指的就是電腦與網路之間的連接點

  1. 實體介面 (Physical Interface):
    • eth0 -> 第一個有線網路卡 (Ethernet)
    • wlan0 -> 無線網卡 (Wi-Fi)
  2. 虛擬介面 (Virtual Interface):例如
    • lo -> 本機迴路 (loopback, 127.0.0.1)
    • docker0 -> Docker 建立的虛擬網橋
    • tun0 / tap0 -> VPN 連線用的虛擬介面
  3. 其他特殊介面:any -> 表示同時監聽所有介面

如何查看有哪些介面?

$ tcpdump -D

封包過濾

$ tcpdump -i eth0 host HOSTNAME/IP //案主機名/IP過濾封包
$ tcpdump port PORT_NUMBER //按連接埠號過濾資料包
$ tcpdump src/dst host IP //根據特定來源/目標主機過濾

邏輯運算子

對於過濾封包的條件有時可能不只一條,這時候就可以用這幾個運算子來讓過濾條件更詳細
and:捕獲兩個條件都成立的資料包
or:當任一條件成立時捕獲資料包
not:當條件不成立時捕獲資料包

$ tcpdump src host 192.168.1.10 and dst port 80 //來源 IP = 192.168.1.10 且目的埠 = 80 的封包
$ tcpdump dst port 80 or dst port 443 //送往 80 或 443 (HTTP/HTTPS) 的封包
$ tcpdump not host 192.168.1.1 //捕獲所有封包,但排除 192.168.1.1 的來源或目的
# --------合用的樣子-------
$ tcpdump src net 10.0.0.0/8 and not dst port 22 //捕獲來源在 10.0.0.0/8 網段,但不是送往 22 (SSH) 的封包

顯示封包

控制輸出的格式,是否顯示更詳細的封包內容

$ tcpdump -n //不解析主機名
$ tcpdump -nn //不解析主機名與埠號
$ tcpdump -v //詳細模式(-vv:更詳細模式、-vvv:最詳細模式)
$ tcpdump -q //快速輸出(簡化封包內容顯示)
$ tcpdump -e //顯示資料鏈路層標頭(例如 MAC 位址)
$ tcpdump -A //以 ASCII 顯示封包
$ tcpdump -xx //以16進位顯示封包
$ tcpdump -X //16進位與 ASCII 同時顯示封包標頭與資料

進階過濾

以長度過濾

$ tcpdump -i any greater 100 //過濾長度>=100 bytes
$ tcpdump -i any less 100 //過濾長度<=100 bytes

以TCP標誌過濾

常用的 TCP 標誌包括:

  • SYN:用於建立連線的同步請求
  • ACK:確認收到資料的應答
  • FIN:連線終止請求
  • RST:重置連線
  • PSH:推送資料,請求立即交付
  • URG:緊急資料標誌
$ tcpdump 'tcp[tcpflags] & tcp-syn != 0'                 // 顯示 SYN 封包(建立連線請求)
$ tcpdump 'tcp[tcpflags] & tcp-fin != 0'                 // 顯示 FIN 封包(連線終止請求)
$ tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)'  // 顯示 SYN+ACK 封包(連線響應)

今天先講兩個工具,明天講Nmap
之後再給三個工具比較一下他們之間有什麼關係


上一篇
Day 15. Networking 5
下一篇
Day 17. Networking 7
系列文
THM30天挑戰:從菜鳥到小駭客17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言